/*******************************************************************************
 * This file is part of blueprint4j www.blueprint4j.org.
 * 
 *     blueprint4j is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU Lesser General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 * 
 *     blueprint4j is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU Lesser General Public License for more details.
 * 
 *     You should have received a copy of the GNU Lesser General Public License
 *     along with blueprint4j. If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/
package blueprint4j.comm.io;

import blueprint4j.utils.*;

import java.io.*;

public abstract class LineWriter {

	private LineWriter writer = null;
	
	public LineWriter() {}
	
	// EMPTY CONSTRUCTIR
	public LineWriter(OutputStream stream) {
		this.writer = new LineWriterWrite(stream);
	}
	
	public LineWriter(LineWriter writer) {
		this.writer = writer;
	}

	public void writeLine(byte data[]) throws IOException {
		writeBytes(data);
	}
	
	protected void write(byte data[]) throws IOException {
		writer.writeBytes(data);
	}
	
	/**
	 * This writes directly to the stream
	 */
	 protected void writeToStream(byte data[]) throws IOException {
		 writer.writeToStream(data);
	 }

	/**
	 * This writes directly to the stream
	 */
	 protected void writeToStream(byte data[],int start,int end) throws IOException {
		 writer.writeToStream(data,start,end);
	 }

	 public void writeLineStr(String data) throws IOException {
		 writeLine(data == null?(new byte[]{}):data.getBytes());
	}

	abstract void writeBytes(byte data[]) throws IOException ;
	
	public void close() throws IOException {writer.close();}
}
